int cmp(const void* pa, const void* pb){
    return (*(char*)pa - *(char*)pb);
}
int splitNum(int num) {
    int num1 = 0, num2 = 0;
    char ans[11];
    int n = sprintf(ans, "%d", num);
    qsort(ans, n, sizeof(char), cmp);

    for(int i = 0; i <= n - 1; i += 2){
        num1 = num1 * 10 + ans[i] - '0';
        if(i + 1 <= n - 1){
            num2 = num2 * 10 + ans[i + 1] - '0';
        }
    }
    return num1 + num2;
}

/*给你一个正整数 num ，请你将它分割成两个非负整数 num1 和 num2 ，满足：

num1 和 num2 直接连起来，得到 num 各数位的一个排列。

换句话说，num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。

num1 和 num2 可以包含前导 0 。请你返回 num1 和 num2 可以得到的和的最小值。

注意:num 保证没有前导 0 。num1 和 num2 中数位顺序可以与 num 中数位顺序不同。*/